#include "rclcpp/rclcpp.hpp"

class DemoParam : public rclcpp::Node
{
public:
    DemoParam() : Node("demo_param")
    {
        RCLCPP_INFO(this->get_logger(), "节点已经启动!");
        rclcpp::Parameter param1("name", "上料点");
        rclcpp::Parameter param2("x", 0.0);
        rclcpp::Parameter param3("y", 0.0);
        //获取参数键
        RCLCPP_INFO(this->get_logger(), "参数键为:%s", param1.get_name().c_str());
        RCLCPP_INFO(this->get_logger(), "参数键为:%s", param2.get_name().c_str());
        //获取参数值
        RCLCPP_INFO(this->get_logger(), "name=%s",param1.as_string().c_str());
        RCLCPP_INFO(this->get_logger(), "x=%f",param2.as_double());
        RCLCPP_INFO(this->get_logger(), "y=%f",param3.as_double());
        //获取参数类型
        RCLCPP_INFO(this->get_logger(), "参数类型为:%s", param1.get_type_name().c_str());
    }

private:
};

int main(int argc, char *argv[])
{
    /* 初始化rclcpp  */
    rclcpp::init(argc, argv);
    /* 产生一个 节点 */
    auto node = std::make_shared<DemoParam>();
    /* 运行节点，并检测退出信号 Ctrl+C */
    rclcpp::spin(node);
    /* 停止运行 */
    rclcpp::shutdown();
    return 0;
}